<?php
	
	require_once(dirname(__FILE__) . "/../controllers/user.php");
	require_once(dirname(__FILE__) . "/../controllers/calciatore.php");
	require_once(dirname(__FILE__) . "/../model/db_driver.php");
	$cartella_stagione = str_replace("/", "_", Calendario::getStagione());
	$cartellaVoti = dirname(__FILE__) . "/voti/$cartella_stagione/";
	$htmlPage = "";
	session_start();
	if(User::getCurrentUser()==null || User::getCurrentUser()->getRuolo()<User::$ADMIN){
		$htmlPage = "Errore: devi essere un amministratore per visualizzare questa pagina.<br />";
	}else{
	/* Questa parte viene chiamata due volte: una volta dalla richiesta reale e una volta dalla pagina stessa
	 * che scrive solo dentro all'iframe */
		if(isset($_REQUEST["dest"]) && $_REQUEST["dest"]="iframe"){
			/* Codice per l'iframe */
			$htmlPage ="					
				<form method='POST' action='caricaVoti.php?dest=iframe' enctype='multipart/form-data'>
					<input name='votesFile' id='votesFile' type='file' /> &nbsp;&nbsp;
					<input type='submit' name='caricaFile' value='Carica file' /> <!-- -->
				</form>";
				
				/* Se è stata fatto POST sull'iframe carica il file selezionato */
				if(isset($_FILES["votesFile"])){
		    	/* controlla e carica il file sul server */
			    	if($_FILES["votesFile"]["error"]>0){
			    		$htmlPage = $htmlPage . "<div style='font-size:15px;color:red;'>Errore nel caricamento del file: " 
			    			. $_FILES["votesFile"]["error"] . "</div>";
			    	}else{
			    		$giornata = Array();
						$nomeFile = $_FILES["votesFile"]["name"];
						preg_match('/(?<=_)\d{1,2}(?=_Giornata)/', $nomeFile, $giornata, PREG_OFFSET_CAPTURE);
						if($giornata[0][0] < 10){
							//fa in modo che i numeri di giornata da 1 a 9 abbiano lo 0 davanti
							$nomeFile = preg_replace('/(?<=_)\d(?=_Giornata)/','0' . (string)$giornata[0][0], $nomeFile);
							// sostituisce le parenti tonde con _
							$nomeFile = preg_replace('[\(\)]', '_', $nomeFile);
						}
						$file_path = "voti/$cartella_stagione/" . str_replace(".xls", ".htm", $nomeFile);
						$file_path = str_replace("(", "_", $file_path);
						$file_path = str_replace(")", "_", $file_path);
				    	move_uploaded_file($_FILES["votesFile"]["tmp_name"], $file_path);
						/* adesso salva i risultati sul DB*/
			    		$tabella = str_replace("<table ", "<table style='font-size:12px;width:99%;' ", file_get_contents($file_path));
			    		$tabella = str_replace("Solo su WWW.FANTAGAZZETTA.COM i voti alle prime luci dell'alba", "", $tabella);
						$tabella = str_replace("QUESTO FILE NON PUO' ESSERE RIPRODOTTO NE' PUBBLICATO SU ALTRI SITI INTERNET", "", $tabella);
						$tabella = str_replace("E' DA CONSIDERARSI AD USO PERSONALE ESCLUSIVO DEGLI ISCRITTI DI FANTAGAZZETTA.COM", "", $tabella);
						file_put_contents($file_path, $tabella);
			    		
			    		//ereg('(?<=_)\\d{1,2}(?=_Giornata)', $nomeFile, $giornata);
			    		
			    		try{
							caricaRisultati($giornata[0][0]);
							echo "<div style='color:blue'>Voti della giornata ". $giornata[0][0] . " caricati sul DB con successo</div>";
						}catch (Exception $ex){
							echo "<div style='color:red'>Errore durante il caricamento dei dati sul DB:<br />$ex</div>";
						}
						/* fa ricaricare la lista dei file */
						$lista = str_replace('"', '\"', str_replace("'", "\'", caricaListaFile()));
						$htmlPage = $htmlPage . "
							<script type='text/javascript' language='javascript'>
								parent.document.getElementById('dvListaFile').innerHTML='" . $lista . "';".
							"</script>
						";
					}
				}
		}else{

		    /* visualizza la finestra con cui caricare
			 * il file e la lista dei file presenti sul server */
			$htmlPage = $htmlPage . "
				<p class='adminTitle'>
					Carica voti della fantagazzetta
				</p>
				<table style='width:100%'>
				<tr>
					<td style='width:100%; border-bottom: gray 1px solid'>
						<iframe src='caricaVoti.php?dest=iframe' style='width:70%;height:120px;border-style:none;' border='0'>
						</iframe>
					</td>
				</tr>
				<tr>
					<td style='width:100%'>
						Lista dei file presenti sul server: <br /><br />
						<div id='dvListaFile'>
						" . caricaListaFile() . "
						</div>
					</td>
				</tr>
				</table>
			";
		    		
		}

	}
	echo $htmlPage;
	
	function caricaListaFile(){
		global $cartellaVoti;
		$lista = "<table  style='width:100%' border='1'>"; /*  */
		$fileVoti = scandir($cartellaVoti);
		sort($fileVoti, SORT_STRING);
		for($i=count($fileVoti) - 1; $i >= 0;$i--){
			$f = $fileVoti[$i];
			if($f=='.' || $f=='..')
				continue;
			$lista = $lista . "<tr><td>$f</td></tr>";
		}
		$lista = $lista . "</table>";
		return $lista;
	}

	//http://it.php.net/manual/en/xmlreader.movetoelement.php
	function caricaRisultati($giornata){
		global $cartella_stagione;
		$name_giornata = $giornata < 10 ? '0' . (string)$giornata : $giornata;
		$nomeFile = dirname(__FILE__).  DIRECTORY_SEPARATOR ."voti" . DIRECTORY_SEPARATOR . $cartella_stagione . DIRECTORY_SEPARATOR . "Voti_Fantagazzetta__NAPOLI__alla_" . $name_giornata . "_Giornata.htm";
		if(file_exists($nomeFile)==false){
			throw new Exception("I voti per la giornata $giornata non sono stati ancora caricati.<br />
			Impossibile trovare il file<br />" . $nomeFile);
		}
		
		$voti = array(); //conterrà i voti dei calciatori
		libxml_use_internal_errors(true);
		$content = file_get_contents($nomeFile);
		//elimina la prima riga del file xml
		$content = preg_replace('#\<tr\>[\s\S]+CAMPIONATO\s+\d{4}-\d{4}\</b\>\</td\>\</tr\>#', '', $content);
		$content = preg_replace('#&nbsp;#', ' ', $content);
		$content = preg_replace('#\</tr\>\</tr\>#', '</tr>', $content); //corregge un errore del file
		$content  = '<?xml version="1.0" ?' . '>' . $content;
		
		//$table = simplexml_load_string('<?xml version="1.0" ?' . '>' . $content);
		/* */$table = new XmlReader();
		try{
			$table->XML($content);
			$table->read();
			$table->read();
			$table->next();
			$table->next();
			$table->next();
	
		    /*$errors = libxml_get_errors();
			echo "<br />Trovati " . count($errors) . " errori<br />";
		    foreach ($errors as $error) {
		        echo display_xml_error($error, $xml);
		    }
		    libxml_clear_errors();*/
			
			/* La riga successiva è della prima squadra */

			leggiVoti($table, $voti, $giornata);
			/* Salva i voti sul DB */
			$driver = new DbDriver();
			$driver->caricaVoti($voti);
			$table->close();
		}catch (Exception $ex){
			$table->close(); //si assicura di chiudere l'XmlReader
			throw $ex;
		}
	}
	
/*
function display_xml_error($error, $xml)
{
    $return  = $xml[$error->line - 1] . "\n<br />";
    //$return .= str_repeat('-', $error->column) . "^\n<br />";

    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
         case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }

    $return .= trim($error->message) .
               "\n<br />  Line: $error->line" .
               "\n<br />  Column: $error->column";

    if ($error->file) {
        $return .= "\n<br />  File: $error->file";
    }

    return "$return\n\n<br /><br />--------------------------------------------\n\n<br /><br />";
}*/

	
	function leggiVoti($riga, &$voti, $giornataA){
	/* legge i voti dalla tabella e per ognuno crea l'oggetto
	 * VotoCalciatore e lo mette nell'array voti */
		$i = 0;
		
		
		while ($riga->next()){
			//salta la riga del nome della squadra e dell'intestazione delle colonne
			//echo "leggo: " . $riga->readString() . "<br /><br />";
			
			if(stripos($riga->readString(),'Ruolo') > 0 || 
				stripos($riga->readString(),'WWW.') > 0)
				continue;

			$c = leggiVotoCalciatore($riga, $giornataA);
			if($c!=null){
				array_push($voti, $c);
			}
		}

	}
	
	function leggiVotoCalciatore($xr, $giornataA){
		$c = new VotoCalciatore();
		$xr->read(); //legge il primo td
		$c->id = $xr->readString(); $xr->next(); // id
		$c->ruolo = $xr->readString(); $xr->next(); // ruolo
		$c->nome = $xr->readString(); $xr->next(); // nome
		$c->voto = str_replace(",", ".", $xr->readString()); $xr->next(); // voto
		$c->golFatto = $xr->readString(); $xr->next(); //gol fatto
		$c->golSubito = $xr->readString(); $xr->next(); //gol subito
		$c->rigoreParato = $xr->readString(); $xr->next(); //rigore parato
		$c->rigoreSbagliato = $xr->readString(); $xr->next(); //rigore sbagliato
		$c->rigoreSegnato = $xr->readString(); $xr->next(); //rigore segnato
		$c->autorete = $xr->readString(); $xr->next(); //rigore segnato
		$c->ammonizione = $xr->readString(); $xr->next(); //ammmonizione
		$c->espulsione = $xr->readString(); $xr->next(); //espulsione
		$c->assist = $xr->readString(); $xr->next(); //assist
		$c->assist_fermo = $xr->readString(); $xr->next(); //assist da vermo
		$c->gdv = $xr->readString(); $xr->next(); //gdv
		$c->giornataA = $giornataA;
		$xr->next(); //legge la successiva riga
		//fa un minimo controllo che sia stato effettivamente letta la riga di un calciatore
		if(filter_var($c->id, FILTER_VALIDATE_INT)){
			return $c;
		}else {
			return null;
		}
	}

?>